﻿#pragma once
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <stdbool.h>

//定义节点
typedef int LTDataType;
typedef struct ListNode
{
	struct ListNode* prev;  //保存前一个节点
	struct ListNode* next;  //保存下一个节点
	LTDataType data;
}LTNode;

//初始化，创建哨兵位
void LTInit(LTNode** pphead);
//打印
void LTPrint(LTNode* phead);

//插入数据前，链表必须初始化为只有一个头节点
//
//尾插
void LTPushBack(LTNode* phead, LTDataType x);
//头插
void LTPushFront(LTNode* phead, LTDataType x);
//尾删
void LTPopBack(LTNode* phead);
//头删
void LTPopFront(LTNode* phead);
//在pos位置之后插⼊数据
void LTInsert(LTNode* pos, LTDataType x);
//删除pos节点
void LTErase(LTNode* pos);
//查找
LTNode* LTFind(LTNode* phead, LTDataType x);
//销毁
void LTDestroy(LTNode* phead);